Often there is a need to install patches, such as security patches or update patches as soon as possible on a running computer system. A patch is software designed to fix security problems or update a computer program including its supporting data. However, the patches to a kernel or applications in the system traditionally require rebooting the system before they take effect, which can be highly disruptive to users of the system. A reboot takes quite a long time and affects the availability of the system to users.
Currently, generic hot patching systems install patches by modifying a software code of a first instruction of an original function to jump into a replacement function to replace the original function. However, in such generic hot patching systems, the software code of the original function is modified every time a patch is installed or updated, which takes up a lot of time. As such, the generic hot patching systems provide a lack of flexibility, added complexity and further make it harder to ensure atomicity of the change in the original instruction.